package com.work.yshop.mvp.contract;

import com.work.yshop.model.Product;

import java.util.List;

/**
 * 卖家首页Contract
 */
public interface SellerHomeContract {

    /**
     * View接口
     */
    interface View {
        /**
         * 显示加载中
         */
        void showLoading();

        /**
         * 隐藏加载中
         */
        void hideLoading();

        /**
         * 显示错误信息
         */
        void showError(String message);

        /**
         * 显示商品总数
         */
        void showProductCount(int count);

        /**
         * 显示商品列表
         */
        void showProducts(List<Product> products);

        /**
         * 显示销售额
         */
        void showSalesAmount(String amount);

        /**
         * 显示订单数量
         */
        void showOrderCount(String count);

        /**
         * 显示操作成功提示
         */
        void showSuccess(String message);

        /**
         * 跳转到商品编辑页面
         */
        void navigateToProductEdit(int productId);

        /**
         * 跳转到商品列表页面
         */
        void navigateToProductList();

        /**
         * 跳转到订单管理页面
         */
        void navigateToOrderManage();

        /**
         * 跳转到发布商品页面
         */
        void navigateToPublishProduct();
    }

    /**
     * Presenter接口
     */
    interface Presenter {
        /**
         * 绑定View
         */
        void attachView(View view);

        /**
         * 解绑View
         */
        void detachView();

        /**
         * 加载数据
         */
        void loadData();

        /**
         * 编辑商品
         */
        void editProduct(Product product);

        /**
         * 切换商品状态
         */
        void toggleProductStatus(Product product);

        /**
         * 跳转到商品列表
         */
        void navigateToProductList();

        /**
         * 跳转到订单管理
         */
        void navigateToOrderManage();

        /**
         * 跳转到发布商品
         */
        void navigateToPublishProduct();
    }
} 